package top.milkbox.utils;

import java.io.File;

/**
 * 有关文件的操作
 * <p>
 * 创建时间：2022年9月24日16:37:52
 *
 * @author milkbox
 * @version 1.0.0
 */
public class GuoUtilsFile {

    /**
     * 获取文件扩展名
     * 例如：
     * 列子.2022.txt 论语.2022.09.24.txt 这些都是“.txt”，所以level设置为1
     * java.8.11.tar.gz mysql.5.7.tar.gz 这种的都是“.tar.gz”，所以level设置为2
     *
     * @param fileName 文件名，全名
     * @param level    要获取的扩展名的个数
     * @return 返回扩展名（带点），失败则返回null
     */
    public static String getFileExtension(String fileName, Integer level) {
        String[] strList = fileName.split("\\.");
        if (strList.length <= 1) {
            System.out.println("文件名没有扩展名");
            return null;
        } else if (level <= 0 || level > strList.length) {
            System.out.println("level设置不正确");
            return null;
        }
        StringBuilder extension = new StringBuilder();
        while (level >= 1) {
            extension.append(".");
            extension.append(strList[strList.length - level]);
            level--;
        }
        return extension.toString();
    }

    /**
     * 获取文件扩展名
     *
     * @param fileName 文件全名
     * @return 返回扩展名（带点），失败返回null
     */
    public static String getFileExtension(String fileName) {
        return getFileExtension(fileName, 1);
    }

    /**
     * 文件移动，将oldPath移动到newPath中，如果文件名不一样则会重命名
     * 目标目录必须存在，目标目录下不能有重名文件
     *
     * @param oldPath 原来的文件磁盘路径，例如：C://file/file/text.txt
     * @param newPath 新的文件磁盘路径，例如：C://box/box/list.txt
     * @return 成功true
     */
    public static Boolean removeFile(String oldPath, String newPath) {
        return new File(oldPath).renameTo(new File(newPath));
    }
}
